package com.zenithmind.common.exception;

import com.zenithmind.common.result.ResultCode;

/**
 * API异常基类
 * 所有自定义异常都应该继承此类
 */
public class ApiException extends RuntimeException {
    
    private final int code;
    
    /**
     * 构造方法
     *
     * @param message 错误消息
     */
    public ApiException(String message) {
        super(message);
        this.code = ResultCode.INTERNAL_SERVER_ERROR.getCode();
    }
    
    /**
     * 构造方法
     *
     * @param code 错误码
     * @param message 错误消息
     */
    public ApiException(int code, String message) {
        super(message);
        this.code = code;
    }
    
    /**
     * 构造方法
     *
     * @param resultCode 错误枚举
     */
    public ApiException(ResultCode resultCode) {
        super(resultCode.getMessage());
        this.code = resultCode.getCode();
    }
    
    /**
     * 构造方法
     *
     * @param resultCode 错误枚举
     * @param message 自定义错误消息
     */
    public ApiException(ResultCode resultCode, String message) {
        super(message);
        this.code = resultCode.getCode();
    }
    
    /**
     * 构造方法
     *
     * @param message 错误信息
     * @param cause 原始异常
     */
    public ApiException(String message, Throwable cause) {
        super(message, cause);
        this.code = ResultCode.INTERNAL_SERVER_ERROR.getCode();
    }
    
    /**
     * 构造方法
     *
     * @param code 错误码
     * @param message 错误信息
     * @param cause 原始异常
     */
    public ApiException(int code, String message, Throwable cause) {
        super(message, cause);
        this.code = code;
    }
    
    /**
     * 获取错误码
     */
    public int getCode() {
        return code;
    }
} 